/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sistemadeleiloes.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import sistemadeleiloes.model.Leilao;
import sistemadeleiloes.model.Produto;
import sistemadeleiloes.model.Usuario;

/**
 *
 * @author Pedro
 */
public class LeilaoDAO {

    public ArrayList<Leilao> pesquisar() throws SQLException {
        Connection conn = Database.getConnection();
        String sql = "EXEC sp_getLeiloes";
        ArrayList<Leilao> leiloes = null;

        try {
            PreparedStatement pstm = conn.prepareStatement(sql);
            ResultSet rs = pstm.executeQuery();

            Leilao l;
            Produto p;
            Usuario u;

            if (rs.next()) {
                p = new Produto(
                        rs.getInt("idProduto"),
                        rs.getString("nome"),
                        rs.getString("descricao"));

                u = new Usuario(
                        rs.getString("nome"),
                        rs.getString("email"),
                        rs.getString("cpf"),
                        rs.getString("rg"),
                        rs.getString("senha"),
                        rs.getString("telefone"),
                        rs.getString("endereco"),
                        rs.getInt("perfil"));

                l = new Leilao(
                        p,
                        rs.getInt("id"),
                        rs.getDate("dtInicio"),
                        rs.getDate("dtFinal"),
                        rs.getInt("status"),
                        rs.getDouble("valorInicial"),
                        rs.getDouble("valorArremate"),
                        rs.getString("senha"),
                        u);

                leiloes.add(l);
            }
            return leiloes;
        } catch (SQLException e) {
            System.out.println("Erro ao pesquisar: " + e);
            
        }
        
        return leiloes;
    }

    public Leilao pesquisarPorId(int id) throws SQLException {
        Connection conn = Database.getConnection();
        String sql = "EXEC sp_getLeilao ?";
        
        Leilao l = null;
        Produto p = null;
        Usuario u = null;
        
        try {
            PreparedStatement pstm = conn.prepareStatement(sql);
            pstm.setInt(1, id);
            ResultSet rs = pstm.executeQuery();

            if (rs.next()) {
                p = new Produto(
                        rs.getInt("idProduto"),
                        rs.getString("nome"),
                        rs.getString("descricao"));

                u = new Usuario(
                        rs.getString("nome"),
                        rs.getString("email"),
                        rs.getString("cpf"),
                        rs.getString("rg"),
                        rs.getString("senha"),
                        rs.getString("telefone"),
                        rs.getString("endereco"),
                        rs.getInt("perfil"));

                l = new Leilao(
                        p,
                        rs.getInt("id"),
                        rs.getDate("dtInicio"),
                        rs.getDate("dtFinal"),
                        rs.getInt("status"),
                        rs.getDouble("valorInicial"),
                        rs.getDouble("valorArremate"),
                        rs.getString("senha"),
                        u);
            }
            return l;
        } catch (SQLException e) {
            System.out.println("Erro ao pesquisar: " + e);
        }
        
        return l;
    }
    
    public boolean encerrarLeilao(int id, String senha) throws SQLException {
        Connection conn = Database.getConnection();
        String sql = "EXEC sp_UpdEncerraLeilao ?,?";
        
        try{
            PreparedStatement pstm = conn.prepareStatement(sql);
            pstm.setInt(1, id);
            pstm.setString(2, senha);
            
            return (pstm.executeUpdate() != 0);
            
        }catch(SQLException e){
            System.out.println("Erro ao encerrar: " + e);
        }
        
        return false;
        
    }
}
